﻿//начало текста модуля
&НаКлиенте
Перем Ванесса;
 
&НаКлиенте
Перем Контекст Экспорт;
 
&НаКлиенте
Перем КонтекстСохраняемый Экспорт;

&НаКлиенте
Функция ДобавитьШагВМассивТестов(МассивТестов,Снипет,ИмяПроцедуры,ПредставлениеТеста = Неопределено,Транзакция = Неопределено,Параметр = Неопределено)
	Структура = Новый Структура;
	Структура.Вставить("Снипет",Снипет);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ИмяПроцедуры",ИмяПроцедуры);
	Структура.Вставить("ПредставлениеТеста",ПредставлениеТеста);
	Структура.Вставить("Транзакция",Транзакция);
	Структура.Вставить("Параметр",Параметр);
	МассивТестов.Добавить(Структура);
КонецФункции

&НаКлиенте
Функция ПолучитьСписокТестов(КонтекстФреймворкаBDD) Экспорт
	Ванесса = КонтекстФреймворкаBDD;
	
	ВсеТесты = Новый Массив;

	//описание параметров
	//ДобавитьШагВМассивТестов(ВсеТесты,Снипет,ИмяПроцедуры,ПредставлениеТеста,Транзакция,Параметр);

	ДобавитьШагВМассивТестов(ВсеТесты,"ЯОткрываюТекстовыйРедактор()","ЯОткрываюТекстовыйРедактор","Я открываю текстовый редактор");
	ДобавитьШагВМассивТестов(ВсеТесты,"ЯПишуТекстFeature_файла()","ЯПишуТекстFeature_файла","Я пишу текст feature-файла");
	ДобавитьШагВМассивТестов(ВсеТесты,"СохраняюСделанныеИзменения()","СохраняюСделанныеИзменения","Сохраняю сделанные изменения");
	ДобавитьШагВМассивТестов(ВсеТесты,"НаДискеПоявляетсяFeature_файл()","НаДискеПоявляетсяFeature_файл","на диске появляется feature-файл");

	Возврат ВсеТесты;
КонецФункции

&НаКлиенте
Процедура ПередНачаломСценария() Экспорт
	Контекст.Вставить("ПолноеИмяПроверяемогоФайла", КаталогВременныхФайлов() + "AutoDemo.feature");	

	ПроверяемыйФайл = Новый Файл(Контекст.ПолноеИмяПроверяемогоФайла);
	Если ПроверяемыйФайл.Существует() Тогда
		УдалитьФайлы(Контекст.ПолноеИмяПроверяемогоФайла);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПередОкончаниемСценария() Экспорт
	
КонецПроцедуры


&НаКлиенте
//Я открываю текстовый редактор
//@ЯОткрываюТекстовыйРедактор()
Процедура ЯОткрываюТекстовыйРедактор() Экспорт
	Команда = ПолучитьСтрокуВызоваSikuli() + Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 1";

	Результат = ВыполнитьКомандуОС(Команда);
	
	Ванесса.ПроверитьРавенство(Результат, 0 , "Выполнен шаг ЯОткрываюТекстовыйРедактор");
КонецПроцедуры

&НаКлиенте
//Я пишу текст feature-файла
//@ЯПишуТекстFeature_файла()
Процедура ЯПишуТекстFeature_файла() Экспорт
	Команда = ПолучитьСтрокуВызоваSikuli() + Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 2 """ + Ванесса.Объект.КаталогИнструментов + "\features\Support\Instructions\Core\Demo.feature""";

	Результат = ВыполнитьКомандуОС(Команда);
	
	Ванесса.ПроверитьРавенство(Результат, 0 , "Выполнен шаг ЯПишуТекстFeature_файла");
КонецПроцедуры

&НаКлиенте
//Сохраняю сделанные изменения
//@СохраняюСделанныеИзменения()
Процедура СохраняюСделанныеИзменения() Экспорт
	Команда = ПолучитьСтрокуВызоваSikuli() + Ванесса.Объект.КаталогИнструментов + "\tools\Sikuli\FirstFeature.sikuli 3 """ + Контекст.ПолноеИмяПроверяемогоФайла + "";

	Результат = ВыполнитьКомандуОС(Команда);
	
	Ванесса.ПроверитьРавенство(Результат, 0 , "Выполнен шаг СохраняюСделанныеИзменения");
КонецПроцедуры

&НаКлиенте
//на диске появляется feature-файл
//@НаДискеПоявляетсяFeature_файл()
Процедура НаДискеПоявляетсяFeature_файл() Экспорт
	ПроверяемыйФайл = Новый Файл(Контекст.ПолноеИмяПроверяемогоФайла);
	
	Ванесса.ПроверитьИстину(ПроверяемыйФайл.Существует(), "");
КонецПроцедуры

&НаКлиенте
Функция ПолучитьСтрокуВызоваSikuli()
	Возврат """C:\Program Files (x86)\Java\jre6\bin\java.exe"" -Xms64M -Xmx512M -Dfile.encoding=UTF-8 -Dpython.path=""C:\Program Files (x86)\Sikuli Xi\sikuli-script.jar/"" -jar ""C:\Program Files (x86)\Sikuli X\sikuli-ide.jar"" -r ";
КонецФункции	

&НаКлиенте
Функция ВыполнитьКомандуОС(Стр)
	ИмяВременногоBAT = ПолучитьИмяВременногоФайла("bat");

	ЗТ = Новый ЗаписьТекста(ИмяВременногоBAT,КодировкаТекста.ANSI,,Истина); 

	ЗТ.ЗаписатьСтроку(Стр); 
	ЗТ.Закрыть();
	
	WshShell = Новый COMОбъект("WScript.Shell");

	Рез = WshShell.Run(ИмяВременногоBAT,0,-1);
	WshShell = Неопределено;
	
	Возврат Рез;
КонецФункции

//окончание текста модуля